ODPP
Technical specification

Jacket Barcoding — how it actually works

The label, the payload, the scan grammar, and every scan of all three cases from CRB issue to judgement — with the alerts the system would have raised on its own.
The label
Printed at the moment the CRB number is issued and stuck to the front cover in a fixed position. A second label is printed at the ODPP registry when the tracking jacket is raised around the police folder — two physical objects, two tags, one case.
Uganda Police Force CASE FILE JACKET
POLICE
Short code 7QK4M2
CRB 412/2026
Station JINJA ROAD
Issued 26.08.2026 · Tag 01 Do not remove · 0800 112 300
65 × 45mm on synthetic stock. The short code is what a clerk reads aloud on the phone when a camera will not focus — every scan action has a keyboard fallback.
QR payload — and what it deliberately is not ODPP1|7QK4M2|K9
ODPP1 — namespace and format version, so a future v2 label is distinguishable at a glance. 7QK4M2 — six characters of Crockford base32 drawn from a CSPRNG. One billion possibilities, no sequence, no meaning. K9 — checksum. A misread is rejected at the device before it ever reaches the server.
Not a URL A URL means any passer-by with a phone camera gets a tappable link to a government case system. An opaque token scanned by a generic camera app shows meaningless text and goes nowhere.
No personal data No name, no NIN, no offence. The label is stuck to a folder that sits on open counters and travels in a bag through a taxi park. It must reveal nothing to a person holding it.
Not guessable Random, not sequential. Nobody can enumerate the next case, and a stolen label tells an attacker nothing about any other file.
Works offline The device does not need to resolve the token to record a scan. It stores token, direction, location, officer and device clock, and syncs when there is signal.
The scan grammar — eight rules the whole system rests on
The governing principle: never block a scan. Reality is what it is. Record everything, flag what looks wrong, and let a supervisor read the flags — a system that refuses a scan simply teaches people to stop scanning.
{{ g.tag }} {{ g.rule }} {{ g.body }}
Worked example {{ c.n }} — {{ c.station }}
{{ c.title }}
{{ c.blurb }}
Police tag {{ c.tag1 }}
ODPP tag {{ c.tag2 }}
Scans {{ c.scanCount }}
#
Timestamp
Dir
Counter
Scanned by / counterparty
Gap
What the system does
{{ e.i }}
{{ e.ts }}
{{ e.dir }}
{{ e.where }}
{{ e.who }}
{{ e.gap }}
{{ e.effect }}
Alerts the system raises with no human involved
{{ a.when }} · {{ a.kind }} {{ a.body }}
What changes versus the paper run {{ c.verdict }}
Counter time {{ c.counterTime }}
Days made visible {{ c.daysVisible }}
The three cases side by side
Case
Scans
Counter time
Auto-alerts
Earliest warning
Human complaint came
{{ c.name }}
{{ c.scans }}
{{ c.time }}
{{ c.alerts }}
{{ c.first }}
{{ c.human }}
The whole argument in one line Across the three cases, roughly five minutes of counter time would have surfaced eleven problems an average of 113 days before a complainant walked into an office to report them — and two of the three complaints would never have needed to be lodged by a human at all.
Anomalies — what the device does when reality misbehaves
Situation
Device behaviour
Server behaviour
{{ a.situation }}
{{ a.device }}
{{ a.server }}
Built by Nova Generation
Powered by Sprint UG — Live Unlimited